/*
 * $Id: $
 */
package org.rcgwt.client.ui.grid.internal.model;

import org.rcgwt.client.ui.grid.renderer.IGridRenderContext;

import com.google.gwt.dom.client.Element;

/**
 * 
 * @author Olivier Oeuillot (latest modification by $Author: $)
 * @version $Revision: $ $Date: $
 */
public interface IViewModelElements {

	Element getTableElement();

	void setTableElement(Element tableElement);

	Element getViewElement();

	void setViewElement(Element element);

	void setRowElement(IRowModel row, Element rowElement, int renderedIndex,
			boolean visible);

	Element getRowElement(IRowModel row);

	void clearRowElements(IGroupModel groupModel, Element groupElement);

	void setCellElement(ICellModel cellModel, Element cellElement,
			int renderedIndex);

	Element getCellElement(IGridRenderContext gridRenderContext,
			ICellModel cellModel);

	void clearCellElements(IRowModel rowModel, Element rowElement);

	void setGroupElement(IGroupModel groupModel, Element groupElement,
			int renderedIndex);

	Element getGroupElement(IGroupModel groupModel);

	void setGroupTitleElement(IGroupTitleModel groupModel,
			Element groupTitleElement);

	Element getGroupTitleElement(IGroupTitleModel groupTitleModel);

	void setHeaderElement(IHeaderModel header, Element headerElement);

	Element getHeaderElement(IHeaderModel header);

	void setTitleRowElement(ITitleRowModel titleRowModel,
			Element titleRowElement, int renderedIndex);

	Element getTitleRowElement(ITitleRowModel titleRowModel);

	void setTitleCellElement(ITitleCellModel titleCellModel,
			Element titleCellElement, int renderedIndex);

	Element getTitleCellElement(ITitleCellModel titleCellModel);

	void setScrollableTableContainer(Element scrollableTableContainer);

	Element getScrollableTableContainer();

	void setColumnElement(IColumnModel columnModel, Element columnElement,
			int renderedIndex);

	Element getColumnElement(IColumnModel columnModel);

	void clearGroupAndColumnsElements(IViewModel viewModel, Element viewElement);

	IRowModel[] listVisibleRowModels(IViewModel viewModel);

	IElementModel findElementModel(IViewModel viewModel, Element element);
}
